<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">

    <body>

        <ui:composition template="./plantilla.xhtml">

            <ui:define name="content">
                
                <h:form id="formularioDatos">
                    
                    <p:dataTable id="tablaDatos" value="#{ventaAccion.obtenerTodos()}" var="entidad" >
                        <f:facet name="header">
                            <h:outputText value="Gestion Venta"/>
                        </f:facet>
                        <p:column headerText="Id">
                            <h:outputText value="#{entidad.idventa}"/>
                        </p:column>
                        <p:column headerText="Número Factura">
                            <h:outputText value="#{entidad.numerofactura}"/>
                        </p:column>
                        <p:column headerText="Tipo Factura">
                            <h:outputText value="#{entidad.tipoFactura.tipofactura}"/>
                        </p:column>
                        <p:column headerText="Forma Pago">
                            <h:outputText value="#{entidad.formaPago.nombre}"/>
                        </p:column>
                        <p:column headerText="Fecha (dia/mes/año)">
                            <h:outputText value="#{entidad.fechaventa}" >
                                <f:convertDateTime pattern="dd/MM/yyyy"/>
                            </h:outputText>
                        </p:column>
                        <p:column headerText="Acciones">
                            <p:commandButton value="Ver" icon="ui-icon-search" actionListener="#{ventaAccion.seleccionEntidadListaDatos()}"  oncomplete="dialogoMan.show()" update=":formularioMantenimiento">
                                <f:setPropertyActionListener value="#{entidad}" target="#{ventaAccion.entidad}"/>
                            </p:commandButton>
                        </p:column>
                        <f:facet name="footer">
                            <p:commandButton value="Nuevo" actionListener="#{ventaAccion.generarNuevaEntidad()}"  oncomplete="dialogoMan.show()" update=":formularioMantenimiento"/>
                        </f:facet>
                    </p:dataTable>
                    
                </h:form >
                
                <h:form id="formularioMantenimiento">
                    <p:dialog id="mantenimientoDialogo" widgetVar="dialogoMan" modal="true" header="Mantenimiento #{ventaAccion.entidad.class.simpleName}">
                        
                        <h:panelGrid columns="2">
                            <h:outputText value="Id:"/>
                            <p:inputText id="Id" value="#{ventaAccion.entidad.idventa}" readonly="#{!ventaAccion.nuevoRegistro}" required="true" requiredMessage="Campo ID es obligatorio"/>
                            <h:outputText value="Tipo Factura:"/>
                            <p:selectOneMenu value="#{ventaAccion.entidad.tipoFactura}" required="true" >
                                <f:selectItem itemLabel="Seleccione una opción" />
                                <f:selectItems value="#{tipoFacturaAccion.obtenerTodos()}" var="entidadb" itemLabel="#{entidadb.tipofactura}" itemValue="#{entidadb}" />
                            </p:selectOneMenu>
                            <h:outputText value="Numero Factura :"/>
                            <p:inputText id="numerofactura" value="#{ventaAccion.entidad.numerofactura}" required="true" requiredMessage="Campo Numero Factura es obligatorio"/>
                            <h:outputText value="Fecha :"/>
                            <p:calendar id="fechaventa" value="#{ventaAccion.entidad.fechaventa}" required="true" pattern="dd/MM/yyyy" requiredMessage="Campo Fecha es obligatorio"/>
                            <h:outputText value="Cliente: "/>
                            <h:panelGroup>

                                <p:inputText id="cliente" value="#{ventaAccion.entidad.cliente.nombre} #{ventaAccion.entidad.cliente.apellido} #{ventaAccion.entidad.cliente.nit}" readonly="true" required="true" requiredMessage="Cliente es requerido"/>
                                <p:commandButton value="Buscar" icon="ui-icon-search" update=":formularioCliente" oncomplete="dialogoBusquedaCliente.show()"/>

                            </h:panelGroup>
                            <h:outputText value="Cajero:"/>
                            <p:selectOneMenu value="#{ventaAccion.entidad.cajero}" required="true" >
                                <f:selectItem itemLabel="Seleccione una opción" />
                                <f:selectItems value="#{cajeroAccion.obtenerTodos()}" var="entidada" itemLabel="#{entidada.idcajero} #{entidada.nombre} #{entidada.apellido}" itemValue="#{entidada}"/>
                            </p:selectOneMenu>
                            <h:outputText value="Tienda:"/>
                            <p:selectOneMenu value="#{ventaAccion.entidad.tienda}" required="true" >
                                <f:selectItem itemLabel="Seleccione una opción" />
                                <f:selectItems value="#{tiendaAccion.obtenerTodos()}" var="entidadd" itemLabel="#{entidadd.nombre}" itemValue="#{entidadd}"/>
                            </p:selectOneMenu>
                            <h:outputText value="Forma de Pago:"/>
                            <p:selectOneMenu value="#{ventaAccion.entidad.formaPago}" required="true" >
                                <f:selectItem itemLabel="Seleccione una opción" />
                                <f:selectItems value="#{formaPagoAccion.obtenerTodos()}" var="entidadc" itemLabel="#{entidadc.nombre}" itemValue="#{entidadc}" />
                            </p:selectOneMenu>
                            <p:commandButton value="Guardar" action="#{ventaAccion.modificar()}" update=":mensajes :formularioDatos:tablaDatos :formularioMantenimiento:tablaDatosDetalleVenta"/>
                            <p:commandButton value="Eliminar" action="#{ventaAccion.eliminar()}" rendered="#{!ventaAccion.nuevoRegistro}" update=":mensajes :formularioDatos:tablaDatos " />
                        </h:panelGrid>
                        
                        
                        
                        
                        <p:dataTable id="tablaDatosDetalleVenta" rendered="#{ventaAccion.mostrarDetalle}" value="#{ventaAccion.entidad.detalleVentaList}" var="entidadDVenta"  editable="true">
                            
                            <f:facet name="header">
                                <h:outputText value="Detalle Venta"/>
                            </f:facet>
                            <p:column headerText="Id">
                                      <h:outputText value="#{entidadDVenta.iddetalleventa}"/>
                            </p:column>
                            <p:column headerText="Marca">
                                        <h:outputText value="#{entidadDVenta.marca.marca}"/>
                            </p:column>
                            <p:column headerText="Producto presentación">
                                        <h:outputText value="#{entidadDVenta.productoPresentacion.producto.nombre} #{entidadDVenta.productoPresentacion.presentacion.presentacion}"/>                                
                            </p:column>
                            <p:column headerText="Cantidad">
                                        <h:outputText value="#{entidadDVenta.cantidad}"/>
                            </p:column>
                            <p:column headerText="Precio Unitario">
                                <h:outputText value="#{entidadDVenta.precioUnitario}"/>
                            </p:column>
                            <p:column headerText="Acciones">
                                <p:commandButton value="Seleccionar" icon="ui-icon-start" oncomplete="dialogoDetalleMan.show()" update=":formularioMantenimientoDetalle">
                                    <f:setPropertyActionListener value="#{entidadDVenta}" target="#{ventaAccion.entidadDetalle}"/>
                                </p:commandButton>
                            </p:column>
                            <f:facet name="footer">
                                <p:commandButton value="Nuevo" actionListener="#{ventaAccion.generarNuevaEntidadDetalle()}"  update=":formularioMantenimientoDetalle" oncomplete="dialogoDetalleMan.show()"/>
                            </f:facet>
                    </p:dataTable>
                
                    </p:dialog>
                </h:form>
                
                
                <h:form id="formularioCliente">
                    <p:dialog id="busquedaCliente" widgetVar="dialogoBusquedaCliente" modal="true" header="Busqueda de cliente :">
                        
                        <p:dataTable id="tablaDatosCliente" value="#{clienteAccion.obtenerTodos()}" var="entidadCliente" >
                        <f:facet name="header">
                            <h:outputText value="Busqueda de clientes"/>
                        </f:facet>
                        <p:column headerText="Nombre" filterBy="#{entidadCliente.nombre}" filterMatchMode="contains">
                            <h:outputText value="#{entidadCliente.nombre}"/>
                        </p:column>
                        <p:column headerText="Apellido" filterBy="#{entidadCliente.apellido}" filterMatchMode="contains">
                            <h:outputText value="#{entidadCliente.apellido}"/>
                        </p:column>
                        <p:column headerText="DUI" filterBy="#{entidadCliente.dui}" filterMatchMode="contains">
                            <h:outputText value="#{entidadCliente.dui}"/>
                        </p:column>
                        <p:column headerText="NIT" filterBy="#{entidadCliente.nit}" filterMatchMode="contains">
                            <h:outputText value="#{entidadCliente.nit}"/>
                        </p:column>
                        <p:column headerText="Acciones">
                            <p:commandButton value="Seleccionar" icon="ui-icon-start" oncomplete="dialogoBusquedaCliente.hide()" update=":formularioMantenimiento:cliente">
                                <f:setPropertyActionListener value="#{entidadCliente}" target="#{ventaAccion.entidad.cliente}"/>
                            </p:commandButton>
                        </p:column>
                    </p:dataTable>
                    </p:dialog>
                </h:form>
                
                
                <h:form id="formularioMantenimientoDetalle">
                     <p:dialog id="mantenimientoDialogoDetalle" widgetVar="dialogoDetalleMan" modal="true" header="Mantenimiento Detalle">
                        
                        <h:panelGrid columns="2">
                            <h:outputText value="Id:"/>
                            <p:inputText value="#{ventaAccion.entidadDetalle.iddetalleventa}" readonly="true" required="true" requiredMessage="Campo ID es obligatorio"/>
                            <h:outputText value="Marca:"/>
                            <p:selectOneMenu value="#{ventaAccion.entidadDetalle.marca}" >
                                <f:selectItem itemLabel="Seleccione una opción" />
                                <f:selectItems value="#{marcaAccion.obtenerTodos()}" var="marca" itemLabel="#{marca.marca}" itemValue="#{marca}"/>
                            </p:selectOneMenu>
                            <h:outputText value="Producto presentación:"/>
                            <p:selectOneMenu value="#{ventaAccion.entidadDetalle.productoPresentacion}" >
                                <f:selectItem itemLabel="Seleccione una opción" />
                                <f:selectItems value="#{productoPresentacionAccion.obtenerTodos()}" var="ppresentacion" itemLabel="#{ppresentacion.presentacion.presentacion} #{ppresentacion.producto.nombre}" itemValue="#{ppresentacion}"/>
                            </p:selectOneMenu>
                            <h:outputText value="Cantidad:"/>
                            <p:inputText value="#{ventaAccion.entidadDetalle.cantidad}"  required="true" requiredMessage="Campo cantidad es obligatorio" >
                                <f:convertNumber integerOnly="true"/>
                            </p:inputText>
                            <h:outputText value="Precio:"/>
                            <p:inputText value="#{ventaAccion.entidadDetalle.precioUnitario}"  required="true" requiredMessage="Campo precio es obligatorio">
                                <f:convertNumber pattern="###.00"/>
                            </p:inputText>
                            <p:commandButton value="Guardar" action="#{ventaAccion.modificar()}" update=":mensajes :formularioMantenimientoDetalle"/>
                            <p:commandButton value="Eliminar" action="#{ventaAccion.eliminarDetalle()}" rendered="#{!ventaAccion.nuevoRegistroDetalle}" update=":mensajes :formularioDatos:tablaDatos " />
                        </h:panelGrid>
                     </p:dialog>
                </h:form>
                
            </ui:define>

        </ui:composition>

    </body>
</html>
